<?

function conference_add () {
	drupal_add_js(drupal_get_path('module', 'conference').'/deleterow.js');
	drupal_add_css(drupal_get_path('module', 'conference').'/form_add.css', 'module');
	return drupal_get_form('conference_add_form');
}

function conference_add_form($form_state) {
	
	$hour = array();
	$minutes = array();
	
	for ( $i = 0; $i < 60; $i++) {
		
		if ( $i < 10 ) {
			$t = '0'.$i;
		} else {
			$t = $i;
		}
		
		if ($i < 24) {
			$hour[$i] = $t;
		}	
		
		$minutes[$i] = $t;
	}
	
	$form['#redirect'] = 'ippbx/conference';
	
	$form['conf'] = array(
		'#type' => 'fieldset', 
		'#title' => t('Настройки новой конференции'), 
	);

	$form['conf']['name'] = array(
		'#type' => 'textfield',
		'#title' => t('Название конференции'),
		'#description' => t('Название конференции, котое будет отображаться в списке конференций.'),
		'#size'=> 35,
		'#maxlength' => 35
	);
	
	$form['conf']['act_tel'] = array(
		'#type' => 'textfield',
		'#title' => t('Телефонный номер конференции'),
		'#description' => t('Телефонный номер, по которому запускается данная конференция. Каждая конференция должна иметь свой уникальный номер.'),
		'#size'=> 20,
		'#maxlength' => 20
	);
	
	$form['conf']['maxcall'] = array(
		'#type' => 'textfield',
		'#title' => t('Длительность дозвона'),
		'#description' => t('Длительность дозвона до абонентов. Задается в секундах время.'),
		'#default_value' => 30,
		'#size'=> 2,
		'#maxlength' => 2
	);

	$form['conf']['record'] = array(
		'#type' => 'checkbox',
		'#title' => t('Запись'),
		'#description' => t('Если установлена галочка на записи – будет производиться запись конференции.'),
	);	
	
	$form['conf']['time'] = array(
		'#type' => 'fieldset', 
		'#title' => t('Время сбора конференции'),
		'#collapsible' => TRUE,
	);
	
	$form['conf']['time']['hour'] = array(
		'#type' => 'select', 
		'#title' => t('Час'), 
		'#options' => $hour,
		'#prefix' => '<div style="float: left;">',
		'#suffix' => '</div>'
	);

	$form['conf']['time']['minute'] = array(
		'#type' => 'select', 
		'#title' => t('Минуты'), 
		'#options' => $minutes,
		'#prefix' => '<div style="float: left; margin: 0 0 0 20px; width: 90%;">',
		'#suffix' => '</div>'
	);
	
	$form['conf']['time']['days'] = array(
		'#type' => 'checkboxes', 
		'#title' => t('Дни недели'), 
		'#description' => t('Если будет выбран хоть один день недели, то конференция будет собираться автоматически.'),
		'#options' => array(
		  '1' => t('Пн'), 
		  '2' => t('Вт'), 
		  '3' => t('Ср'),
		  '4' => t('Чт'),
		  '5' => t('Пт'),
		  '6' => t('Сб'),
		  '7' => t('Вс'),
		),
		///'#prefix' => '<div style="float: left; margin: 0 0 0 20px;">',
		'#suffix' => '<br style="clear:both;"/>'
	);
	
	$form['conf']['users'] = array(
		'#type' => 'fieldset', 
		'#title' => t('Вызываемые абоненты'),
		'#collapsible' => TRUE,
		'#theme' => 'conference_add_users'
	);
	
	$form['conf']['users']['user_name_0'] = array(
		'#type' => 'textfield',
		'#size'=> 20,
		'#maxlength' => 20
	);
	
	$form['conf']['users']['user_num_0'] = array(
		'#type' => 'textfield',
		'#size'=> 20,
		'#maxlength' => 20
	);
	
	$form['conf']['users']['button'] = array(
		'#type' => 'button',
		'#value' => 'Добавить',
		// Задаём AHAH-обработчик
		'#ahah' => array(
		  'path'    => 'conference/js',
		  'wrapper' => 'user-table-wrapper',
		  'method'  => 'after',
		  'event'   => 'click',
		  'effect'  => 'fade',
		),
	);

	$form['conf']['users']['button_del'] = array(
		'#type' => 'button',
		'#value' => 'Удалить',
		'#attributes' => array( 'onclick' => 'delrow();' ),
		'#executes_submit_callback' => FALSE,
		// Задаём AHAH-обработчик
		'#ahah' => array(
		  'path'    => 'conference/js/del',
		  'event'   => 'click',
		  'effect'  => 'fade',
		),
	);
	
	$form['conf']['submit'] = array(
		'#type' => 'submit',
		'#value' => t('Сохранить конференцию'),
	);

	return $form;
}

function conference_add_form_validate($form, &$form_state) {
	if ($form_state['values']['name'] == "") {
		form_set_error('name', t('Название конференции должно быть введено.'));
	}
	
	if ($form_state['values']['act_tel'] == "" || !preg_match( "/[0-9]/i", $form_state['values']['act_tel'] ) ) {
		form_set_error('act_tel', t('Телефонный номер конференции, должен быть введен и быть уникальным. И состоять из цифр.'));
	}
	
	if ($form_state['values']['maxcall'] == "" || !preg_match( "/[0-9]/i", $form_state['values']['maxcall'] ) ) {
		form_set_error('maxcall', t('Время дозвона должно быть введено, и состоять из цифр.'));
	}
	
	
	for( $i = 0; $i < 50; $i++) {
		if ( isset($form_state['values']['user_name_'.$i]) &&  isset($form_state['values']['user_num_'.$i])) {
			if ($form_state['values']['user_name_'.$i] != NULL || $form_state['values']['user_num_'.$i] != NULL) {
				if ( $form_state['values']['user_name_'.$i] == NULL ) {
					form_set_error( 'user_name_'.$i , t('Имя вызываемого абонента, должно быть введено.'));
				}
				
				if ($form_state['values']['user_num_'.$i] == NULL || !preg_match( "/[0-9]/i", $form_state['values']['user_num_'.$i]) ) {
					form_set_error( 'user_num_'.$i , t('Номер вызываемого абонента должен быть введен, и должен состоять из цифр.'));
				}
			}
		} else {
			break;
		}
	}	
}

function conference_add_form_submit($form, &$form_state) {
	global $user;
	
	ippbx_set_db();
	
	//формирование переменных
	$telnumbers = '';
	$telnumbers_alias = '';
	for( $i = 0; $i < 50; $i++) {
		if ( isset($form_state['values']['user_name_'.$i]) &&  isset($form_state['values']['user_num_'.$i]) && $form_state['values']['user_name_'.$i] != NULL && $form_state['values']['user_num_'.$i] != NULL) {
			$telnumbers .= $form_state['values']['user_num_'.$i].';';
			$telnumbers_alias .= $form_state['values']['user_name_'.$i].';';
		} else {
			break;
		}
	}	
	
	if ($form_state['values']['hour'] < 10) {
		$form_state['values']['hour'] = '0'.$form_state['values']['hour'];
	}
	
	if ($form_state['values']['minute'] < 10) {
		$form_state['values']['minute'] = '0'.$form_state['values']['minute'];
	}
	
	$alarm_time = date("Ymd",time()).$form_state['values']['hour'].$form_state['values']['minute'].'00'; //ИСПРАВИТЬ!!!!!!
	$week_days = '';
	$alarm = 0;
	for ( $i = 1; $i < 8; $i++ ) {	
		if ($form_state['values']['days'][$i] != 0) {
			$alarm = 1;
			$week_days .= '1';
		} else {
			$week_days .= '0';
		}
	}

	db_query("INSERT INTO Conference 
	(name, activate_telnumber, telnumbers, telnumbers_aliases, record_call, maxcall, alarm, week_days, alarm_time, ID_User) 
	VALUES('%s', %d, '%s', '%s', %d, %d, %d, '%s', '%s', %d)" , $form_state['values']['name'], $form_state['values']['act_tel'],
	$telnumbers, $telnumbers_alias, $form_state['values']['record'], $form_state['values']['maxcall'], $alarm, 
	$week_days, $alarm_time, $user->uid);
	
	ippbx_unset_db();
	drupal_set_message('Конференция сохранена.');
}

?>